hsla: Add _gtk_hsla_shade()
authorBenjamin Otte <otte@redhat.com>
Sun, 25 Nov 2012 02:24:47 +0000 (03:24 +0100)
committerBenjamin Otte <otte@redhat.com>
Sun, 25 Nov 2012 02:25:15 +0000 (03:25 +0100)
We use it in multiple places, so better split it out.

gtk/gtkcsscolorvalue.c
gtk/gtkhsla.c
gtk/gtkhslaprivate.h

index 5e6a7f0c028eeffa3882fc964a8421518e86a381..06337869b07068a045f7652b545053a3d32decf5 100644 (file)
@@ -184,12 +184,7 @@ _gtk_css_color_value_resolve (GtkCssValue             *color,
         *dependencies = _gtk_css_dependencies_union (*dependencies, 0);
         
         _gtk_hsla_init_from_rgba (&hsla, _gtk_css_rgba_value_get_rgba (val));
-
-        hsla.lightness *= color->sym_col.shade.factor;
-        hsla.lightness = CLAMP (hsla.lightness, 0.0, 1.0);
-
-        hsla.saturation *= color->sym_col.shade.factor;
-        hsla.saturation = CLAMP (hsla.saturation, 0.0, 1.0);
+        _gtk_hsla_shade (&hsla, &hsla, color->sym_col.shade.factor);
 
         _gdk_rgba_init_from_hsla (&shade, &hsla);
 
index a78849789d1ea78f40a447305eb177a067ba200f..78ccaec19f8242e9c2c18114ccad99e616204aba 100644 (file)
@@ -183,3 +183,21 @@ _gdk_rgba_init_from_hsla (GdkRGBA       *rgba,
     }
 }
 
+void
+_gtk_hsla_shade (GtkHSLA       *dest,
+                 const GtkHSLA *src,
+                 double         factor)
+{
+  g_return_if_fail (dest != NULL);
+  g_return_if_fail (src != NULL);
+
+  dest->hue = src->hue;
+
+  dest->lightness = src->lightness * factor;
+  dest->lightness = CLAMP (dest->lightness, 0.0, 1.0);
+
+  dest->saturation = src->saturation * factor;
+  dest->saturation = CLAMP (dest->saturation, 0.0, 1.0);
+
+  dest->alpha = src->alpha;
+}
index 3cc97d9b71bbbecc46e5af039b8eb5cf5790ee98..9f038cce25182caf1e4593979455ad50ab577d8b 100644 (file)
@@ -42,6 +42,10 @@ void            _gtk_hsla_init_from_rgba    (GtkHSLA          *hsla,
 void            _gdk_rgba_init_from_hsla    (GdkRGBA          *rgba,
                                              const GtkHSLA    *hsla);
 
+void            _gtk_hsla_shade             (GtkHSLA          *dest,
+                                             const GtkHSLA    *src,
+                                             double            factor);
+
 G_END_DECLS
 
 #endif /* __GTK_HSLA_PRIVATE_H__ */